/*-*-C-*-
 * Definitions of ResEd message formats
 */

#ifndef __defined_newmsgs_h
#define __defined_newmsgs_h

#define  MESSAGE_RESED_BASE  0x83340

#define MESSAGE_RESED_OBJECT_LOAD (MESSAGE_RESED_BASE + 0)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
    ObjectClass class;          /* class of the object */
    int version;                /* version number of the object */
    unsigned int address;       /* object's position in sender's address space */
    unsigned int size;          /* size of the object */
    char name[256 - sizeof(MessageHeaderRec) - 7 * sizeof(int)];
} MessageResEdObjectLoadRec, *MessageResEdObjectLoadPtr;


#define MESSAGE_RESED_OBJECT_LOADED (MESSAGE_RESED_BASE + 1)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
    int errcode;                /* if flags & 1 */
} MessageResEdObjectLoadedRec, *MessageResEdObjectLoadedPtr;

/* Error codes for MessageResEdObjectLoadedRec.errcode */
#define OBJECT_LOADED_ERROR_NOMEM 0
#define OBJECT_LOADED_ERROR_VERSION 1
#define OBJECT_LOADED_ERROR_INVALID 2
#define OBJECT_LOADED_ERROR_NONFATAL 3
#define OBJECT_LOADED_ERROR_FATAL 4


#define MESSAGE_RESED_OBJECT_SEND (MESSAGE_RESED_BASE + 2)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
} MessageResEdObjectSendRec, *MessageResEdObjectSendPtr;


#define MESSAGE_RESED_OBJECT_SENDING (MESSAGE_RESED_BASE + 3)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
    unsigned int address;       /* object's position in sender's address space */
    unsigned int size;          /* size of the object */
    int errcode;                /* if flags & 1 */
} MessageResEdObjectSendingRec, *MessageResEdObjectSendingPtr;

/* Error codes for MessageResEdObjectSendingRec.errcode */
#define OBJECT_SENDING_ERROR_NOMEM 0
#define OBJECT_SENDING_ERROR_UNKNOWN 1
#define OBJECT_SENDING_ERROR_NONFATAL 3
#define OBJECT_SENDING_ERROR_FATAL 4


#define MESSAGE_RESED_OBJECT_RENAMED (MESSAGE_RESED_BASE + 4)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
    char name[256 - sizeof(MessageHeaderRec) - 3 * sizeof(int)];
} MessageResEdObjectRenamedRec, *MessageResEdObjectRenamedPtr;


#define MESSAGE_RESED_OBJECT_DELETED (MESSAGE_RESED_BASE + 5)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
} MessageResEdObjectDeletedRec, *MessageResEdObjectDeletedPtr;


#define MESSAGE_RESED_OBJECT_MODIFIED (MESSAGE_RESED_BASE + 6)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
} MessageResEdObjectModifiedRec, *MessageResEdObjectModifiedPtr;


#define MESSAGE_RESED_OBJECT_CLOSED (MESSAGE_RESED_BASE + 7)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
} MessageResEdObjectClosedRec, *MessageResEdObjectClosedPtr;


#define MESSAGE_RESED_SPRITES_CHANGED (MESSAGE_RESED_BASE + 8)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
} MessageResEdSpritesChangedRec, *MessageResEdSpritesChangedPtr;


#define MESSAGE_RESED_OBJECT_NAME_REQUEST (MESSAGE_RESED_BASE + 9)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* identification */
    Opaque objectID;            /* identification */
    int windowhandle;           /* Copied from the DataSave message */
    int iconhandle;             /* Copied from the DataSave message */
} MessageResEdObjectNameRequestRec, *MessageResEdObjectNameRequestPtr;


#define MESSAGE_RESED_OBJECT_NAME (MESSAGE_RESED_BASE + 10)

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    Opaque documentID;          /* preserved from above message  */
    Opaque objectID;            /* preserved from above message  */
    int windowhandle;           /* preserved from above message  */
    int iconhandle;             /* preserved from above message  */
    ObjectClass class;          /* class of the named object */
    char name[256 - sizeof(MessageHeaderRec) - 6 * sizeof(int)];
} MessageResEdObjectNameRec, *MessageResEdObjectNamePtr;


#define MESSAGE_RESED_KEYCUT_DETAILS (MESSAGE_RESED_BASE + 11)

#define KEYCUT_DETAILS_DELIVER_EVENT     0x1   /* flag bit values */
#define KEYCUT_DETAILS_SHOW_OBJECT       0x2
#define KEYCUT_DETAILS_SHOW_AS_TRANSIENT 0x4

typedef struct
{
    MessageHeaderRec header;    /* from wimp.h */
    unsigned int flags;
    int shelltaskid;            /* identifies "owning" shell */
    int windowhandle;           /* window where details were dropped */
    int keycode;
    int eventcode;              /* only valid if DELIVER_EVENT flag set */
    char names[256 - sizeof(MessageHeaderRec) - 5 * sizeof(int)];
} MessageResEdKeycutDetailsRec, *MessageResEdKeycutDetailsPtr;
/*
 * the "names" array contains:
 *     key name      (NUL-terminated string)
 *     object name   (NUL-terminated string)  -  only if SHOW_OBJECT flag set
 */


#endif
